Link power saving state

ABSTRACT

Disclosed are embodiments of a method, apparatus and system for a low power state for a point-to-point link. During the low power state, the signal on both conductors of a differential transmit pair are driven to electrical idle. Analog activity detectors are enabled during the low power state and are disabled during normal power state. Exit from the low power state does not require a physical layer re-initialization sequence. Other embodiments are also described and claimed.

RELATED APPLICATION(S)

This application is a divisional of U.S. application Ser. No.10/850,733, filed May 21, 2004 to which priority is claimed under 35U.S.C. 120. The entire teachings of the above application areincorporated herein by reference.

BACKGROUND

1. Technical Field

The present disclosure relates generally to information processingsystems. More particularly, one or more embodiments relate to powermanagement on a point-to-point data link.

2. Background Art

A computing system may include various elements, including a processoras well as other components that communicate with the processor. Theseother components may include an input/output hub and a memory hub. Theinput/output hub and memory hub may be incorporated into a singlecomponent referred to as a chipset. The computing system may alsoinclude other components such as a graphics controller, memory, andperipheral devices.

Elements of a computing system communicate with each other according toone or more communications protocols. Many standard protocols used incommon processing systems are multi-drop parallel bus implementations.Other protocol implementations have begun to appear in processingsystems. Point-to-point interconnect protocols are an example of suchother protocol implementations.

BRIEF DESCRIPTION OF THE DRAWINGS

The present invention may be understood with reference to the followingdrawings in which like elements are indicated by like numbers. Thesedrawings are not intended to be limiting but are instead provided toillustrate selected embodiments of a method, apparatus and system for alow power state for a point-to-point link.

FIG. 1 is a block diagram of a computing system having a point-to-pointinterface according to at least one embodiment of the present invention.

FIG. 2 is a block diagram illustrating the functional layers of apoint-to-point interface.

FIG. 3 is a block diagram illustrating at least one embodiment of aphysical interconnect between ports of two agents.

FIG. 4 is a block diagram illustrating details of the physical layer forat least one embodiment of an agent.

FIG. 5 is a block diagram illustrating two sample unidirectional linksfor a physical interconnect between two agents.

FIG. 6 is a timing diagram illustrating at least one embodiment of amethod for entering into a low power state for a link of a physicalinterconnect.

FIG. 7 is a timing diagram illustrating at least one embodiment of amethod for exiting from a low power state for a link of a physicalinterconnect.

FIG. 8 is a block diagram of a multi-processor computing system having apoint-to-point interface between processors.

DETAILED DESCRIPTION

Described herein are selected embodiments of an apparatus, system andmethods for a low power state for a point-to-point physicalinterconnect. The point-to-point physical interconnect may be based onthe Common System Interface (CSI). CSI is a cache-coherent,point-to-point interconnection specification. Each CSI agent has one ormore ports. The physical interconnect between a port of one CSI agentand a port of another CSI agent includes two uni-directional links, onein each direction. Each CSI agent may thus have as many physicalinterconnects as it has ports. For at least one embodiment, each CSIport includes in the physical layer one or more differential transmitpairs and one or more differential receive pairs. The physical layer fora CSI port thus includes at least two differentially driven pairs ofsignals: a transmit pair and a receive pair.

In the following description, numerous specific details such as datapacket bit lengths, timer definitions, agent layer functionality, andorder of control flow for operations of a method have been set forth toprovide a more thorough understanding of the present invention. Oneskilled in the art will appreciate, however, that the invention may bepracticed without such specific details. Additionally, some well-knownstructures, circuits, and the like have not been shown in detail toavoid unnecessarily obscuring the present invention.

Disclosed herein are embodiments of a method, apparatus and system forproviding a low power state for communication links in a point-to-pointphysical interconnect. The low power state may be applied to oneuni-directional link of the interconnect while normal communications areallowed to continue in a normal power state on the other(opposite-direction) link.

For embodiments wherein an agent has more than one port, one link foreach of multiple physical interconnects may be placed in the low powerstate, while the other link for each of the interconnects remain active.Alternatively, both links of a physical interconnect may be in the lowpower state concurrently, though each link may enter and exit L0s stateindependently of the other link.

For some commonly-used systems, a flow control mechanism is used tofacilitate reliable data transmission across the link. Such mechanismsends information across the link continuously. This implies, duringperiods when there is no meaningful payload to be sent on the link, thelink nonetheless continues to send idle packets, solely for the purposeof maintaining flow control between two connected ports. Although, theseidle packets carry no meaningful payload data, they still result inpower consumption.

The inventors have determined that power savings can be achieved duringperiods of link inactivity by temporarily disabling flow control,thereby eliminating the need to maintain link traffic during periods oflink inactivity. For at least one embodiment, flow control is disabledduring a low power state, as is described more fully below. When thelink is in such a low power state, certain hardware circuits may bepowered down to conserve power.

Any of several criteria can be used to initiate this low power mode. Forat least one embodiment, the trigger condition for initiating the lowpower mode occurs when an output transaction queue for the agentassociated with the transmit port is empty, or reaches a minimumthreshold. For alternative embodiments, the trigger condition mayreflect a software-triggered event, an event triggered by a higherprotocol layer, a power management event, or the like.

Upon entering this low power mode, referred to herein as L0s, the linkmay be maintained in a state referred to herein as an Electrical Idle(EI) state. Electrical Idle state is defined as the condition where bothhalves of a differential pair have a zero voltage differential acrossthem. The voltage differential need not be absolutely zero volts, butmay be a value below a low threshold value that represents 0 Vdifferential. For at least one embodiment, EI state can be accomplishedby maintaining ground potential on both halves of a differential pair.Other embodiments may use a different potential (Vcc, Vcc/2 etc.) onboth halves, which still meets the definition of Electrical Idle.

Maintaining a link in EI state may not require power consumption. Forinstance, an embodiment may use pull-down terminations at thetransmitter to maintain a lane in EI. Such an embodiment may have groundreferenced terminations at the receiver, for normal operation. As bothtransmitter and receiver are terminated to the same voltage, no currentflows through the link and hence no power is consumed.

When a link enters the L0s state, analog activity detection circuitrymay be activated for the receiving hardware of the link. The analogactivity detection circuitry is, for at least one embodiment, a lowpower circuit that monitors a link for transition out of ElectricalIdle. A break from Electrical Idle, which may be determined when adifferential swing is detected across a differential pair, may beutilized as an indication that the transmitter is ready to exit fromL0s. The transmitter may break Electrical Idle in response to a triggercondition, such as determining that at least a threshold number ofpackets are awaiting transmission on the link. (Of course, other triggerconditions may be utilized).

The receiver may initiate an L0s exit sequence in response to theL0s-exit trigger condition (such as a break in Electrical Idle), inorder to return to a normal power state. The analog detection circuitrymay be de-activated when the link returns to the normal power state.

For embodiments of the L0s state disclosed herein, performance of a linkmay be evaluated in terms of the time taken to exit L0s and re-establishflow control. While such actions might be accomplished by completelyreinitializing certain link hardware, the inventors have deemed suchapproached to require an unacceptably long time span. Such ahypothetical wake up time can allow for completely powering down thephysical layer at the expense of impractical wake-up time.

Instead, embodiments of the L0s state disclosed herein provide atrade-off between performance and power savings by facilitating the useof a configurable wake-up time. For such embodiments, both ports of alink may be associated with a common L0s wake-up time. Such wake-up timeis a predefined value that may be a static constant value or adynamically determined value. When the L0s state is initiated on a link,the current L0s wake-up time in effect is used to determine whichhardware circuits should be powered down in the transmitting andreceiving ports of the link. The powered-down circuits are chosen suchthat they can later be powered-up within the predetermined wake-up time,once decision to exit L0s has been made.

FIG. 1 is a block diagram illustrating a processing system 100 thatutilizes a point-to-point interconnect interface. The system 100includes a processor 120. The processor 120 may include one or moreprocessing cores. The processor 120 may also include one or more caches.The system 100 may include a memory system 130.

Memory system 130 may store instructions 170 and data 175 forcontrolling the operation of the processor 120. Memory system 130 isintended as a generalized representation of memory and may include avariety of forms of memory, such as a hard drive, CD-ROM, random accessmemory (RAM), dynamic random access memory (DRAM), static random accessmemory (SRAM), flash memory and related circuitry. Memory system 130 maystore instructions 170 and/or data 175 represented by data signals thatmay be executed by the processor 120.

In addition, the processor 100 may optionally include an integratedmemory controller 125. For such embodiments, the integrated memorycontroller 125 provides an interface to the memory system 130. Also forsuch embodiments, a chipset 140 primarily supports graphics-relatedfunctionality in conjunction with a graphics component 150. The chipset140 may also provide connectivity with input/output (I/O) devices 160.For at least one embodiment, chipset 140 may include one or more chipsetdevices, with each chipset device providing separate interfacefunctionality. For example, one of the chipset devices may supportgraphics functionality while another chipset device may support I/Oconnectivity and/or interface with a firmware hub (not shown).

For at least one other embodiment, the processor 120 does not include anintegrated memory controller 125. For such embodiment, the chipset 140provides memory control functionality as well as the graphics, I/Oand/or firmware functionality described above. For such embodiment, thechipset 140 provides an interface to the memory system 130.

The processing system 100 may be incorporated into any of severalplatforms, including desktop, mobile and server platforms. For any ofthese platforms, the processing system may further be based on any typeof processor architecture, including 16-bit, 32-bit, 64-bit and 128-bitprocessor architectures.

FIG. 1 illustrates that at least one embodiment of the processor 120includes an external point-to-point interface 160 with the chipset 140.The interface 160 may be a link interface based on the Common SystemInterface (CSI) interconnect specification. Accordingly, the processor120 and the chipset 140 may each be CSI agents in that they each hostone or more ports that are compliant with the CSI interfacespecification

Turning briefly to FIG. 8, it can be seen that, for at least one otherembodiment, a system 800 may include multiple processors 120 a-120 n. InFIG. 8, like elements for those elements discussed above in connectionwith FIG. 1 are given like reference numerals. Although only twoprocessors 120 a, 120 n are shown in FIG. 8, any number (n) ofprocessors 120 may be present in system 800.

FIG. 8 illustrates that a processor 120 a may include an interface 820with one or more other processors 120 n. For at least one embodiment,the interface 820 between each processor 120 of the multi-processorsystem 800 is a point-to-point interface. For other embodiments, theinterface 820 may be a multi-drop bus interface. Theprocessor-to-processor interface 820 may help provide additional networkbandwidth and may also help reduce latency of cache snoops of anotherprocessor's cache. In addition, the interface 820 may also reducelatency of direct cache-to-cache transfers of instructions 170 and/ordata 175.

As with the embodiments discussed above in connection with FIG. 1,processors 120 a-120 may each include an integrated memory controller125 that provides an interface to a dedicated portion 135 of adistributed memory system. Alternatively, the memory controller functionmay be provided by a chipset 140. For the latter embodiment, the chipset140 provides a memory interface and memory controller function with acentralized main memory 130.

The interface 810 between a processor 120 and the chipset 140 isillustrated in FIG. 8 as a multi-drop interface between the chipset 140and all processors 120 a-120 n. However, one of skill in the art willrecognize that a separate interface 810 between each processor 120 a-120n and the chipset 140 could, for alternative embodiments, be apoint-to-point interface. A single system 800 may include one or moremulti-drop interfaces, such as, for example, interface 810, along withone or more point-to-point interfaces, such as, for example, interface820.

Embodiments of the methods disclosed herein may be performed in aprocessing system such as the systems 100, 800 shown in FIGS. 1 and 8,respectively. Systems 100 and 800 are representative of processingsystems that include Itanium® and Itanium® 2 microprocessors andPentium®, Pentium® Pro, Pentium® II, Pentium® III, Pentium® 4microprocessors, as well as Pentium® M microprocessors, all of which areavailable from Intel Corporation. Systems 100 and 800 are alsorepresentative of processing systems, such as cellular telephones,personal digital assistants, portable video players, portable mediaplayers and other hand-held devices based on the Intel® XScale™technology. Other systems (including personal computers (PCs) andservers having other microprocessors, engineering workstations, set-topboxes and the like) may also be used. At least one embodiment of system100 and/or 800 may execute a version of the Windows™ operating systemavailable from Microsoft Corporation, although other operating systemsand graphical user interfaces, for example, may also be used.

FIG. 2 is a block diagram illustrating layers of the CSI interface. Thefunctionality of CSI is partitioned into five layers, one or more ofwhich may be optional for certain platform options. The layersillustrated in FIG. 2 include, from bottom to top, a physical layer 202and a link layer 204. The CSI layers also include optional layers 206.Optional layers 206 include a transport layer and a routing layer.Finally, the layers include a protocol layer 208.

The physical layer 202 is responsible for electrical transfer ofinformation between two CSI agents across the physical medium. For atleast on embodiment, the physical link is a point-to-point link betweenthe two CSI agents and uses a differential signaling scheme.

The link layer 204 abstracts the physical layer from the upper layers.For at least one embodiment, the link layer 204 provides for reliabledata transfer and flow control between two directly connected CSIagents.

The transport and routing layers (see 206) are optional and are utilizedfor certain platform options only. For example the functionality of therouting layer may be embedded in the link layer for certain desktop,mobile and dual processor systems. Generally, the routing layer providesa flexible and distributed manner of routing CSI packets from a sourceto a destination and the transport layer provides support for end-to-endreliable transmission between two CSI agents that each have transportlayer capability.

FIG. 2 illustrates that the top-most layer of the CSI point-to-pointinterface is the protocol layer 208. The protocol layer implementshigher level communication between CSI nodes. The protocol layer mayimplement cache coherence, ordering, peer to peer I/O, and interruptdelivery.

FIG. 3 is a block diagram illustrating at least one embodiment of aphysical interconnect 360 between the ports 350 a, 350 b, respectively,of two CSI agents 320 a, 320 b. Although FIG. 3 illustrates only oneport 350 for each agent 320, one of skill in the art will recognize thateach agent 320 may include additional ports (not shown). FIG. 3illustrates that the physical layer 202 is responsible for providing ameans of communication between the CSI ports 350 of each of the agents320 a, 320 b. For at least one embodiment, one of the agents 320 a maybe a processor (such as processor 120 shown in FIG. 1) and the otheragent 320 b may be an I/O hub or chipset (such as chipset 140 shown inFIG. 1).

FIG. 3 illustrates that the physical interconnect 360 between two ports350 includes two unidirectional links 304, 306. FIG. 3 illustrates thatthe unidirectional links include a transmit (Tx)-receive (Rx) link 306going in one direction between the ports 350 a, 350 b and a Rx-Tx link304 going in the other direction between the ports 350 a, 350 b.

As is stated above, each CSI agent 320 is host to one or more ports 350.As used herein, the term “port” may refer to one or more transceivers ofan agent 320. For at least one embodiment, a transceiver is atransmit/receive (Tx, Rx) differential pair. For at least oneembodiment, a differential pair is a pair of copper conductors that forma conduit for one bit of control/data or clock information; the pair ofconductors may embody a differential signaling scheme

For at least one embodiment, each of Tx and Rx differential pairs isthus utilized to transmit or receive a clock signal or 1 bit of controlor data. For an embodiment wherein each of the Tx and Rx differentialpairs represents a single bit of data, a port 350 may include enough Tx,Rx pairs (transceivers) to support the total number of bits defined forthe physical interconnect 360.

Thus, for an embodiment wherein each link is defined to be 20 bits wide,for example, a port 350 may include 20 differential Tx pairs to sendcontrol/data in one direction, along with a differential Tx pair tocarry the forwarded clock, and may also include 20 differential Rx pairsto receive control/data in the other direction, along with adifferential Rx pair to receive the forwarded clock.

For at least one embodiment, a default link width is 20 bits wide. Sucha link includes twenty Rx and Tx differential pairs to carry, in onedirection, control/data and an additional differential pair to carry theforwarded clock in the same direction. The conduit from a local Tx or Rxdifferential pair of one agent, respectively, to a remote Rx or Txdifferential pair, respectively, of another agent is referred to hereinas a “lane.”

For at least one embodiment, a link having 20 physical data/controllanes is referred to as a full width link. The physical lanes of a linkmay be configured to be inactive in order to facilitate a lesser-widthlink. That is, for an embodiment having 20-bit full-width links, a linkmay be configured in a half-width mode with 10 active lanes or in aquarter-width mode having active lanes. In some such embodiments, theremay be no requirement that the number of active links in each directionof a physical interconnect be configured with the same number of activelanes at a given time. For instance, a physical interconnect having a20-lane uni-directional link in each direction may have one of the linksconfigured to have 20 active lanes configured in one direction and 10active lanes configured for the other direction.

FIG. 4 is a block diagram illustrating further detail of the physicallayer 202 for at least one embodiment of an agent 320. The physicallayer 202 for each agent 320 directly interacts with only the link layer204 of the same agent 320.

FIG. 4 illustrates that the physical layer 202 may be conceptualized ashaving two distinct blocks—a logical module 402 and an electrical module404. During normal power state operation, the logical module 402 may actas a pass-through conduit for communication traffic to the link layer204. The logical module 402 is responsible for initialization of thephysical layer 202, and for providing physical layer test hooks andphysical layer debug hooks.

The logical module 402 is also responsible, for at least one embodiment,for power management inside the physical layer 202. The logical module402 may thus respond to requests to enter and exit low power states. Forat least one embodiment, the logical module 402 communicates with linklayer 204 to enter and exit low power states. The logical module 402 mayinclude control logic to control the enabling/disabling of input-output(I/O) circuitry to enter and exit a low power state and to turn-on lowpower circuitry to maintain a link in a low power electrical idle state.The logical module 402 may also include control logic to resynchronizeboth CSI agents upon exiting from the low power state. The logicalmodule 402 may also include control logic to control enabling anddisabling of analog activity detectors 420 (described below).

At least one embodiment of the electrical module 404 is transparent tothe link layer 204, and only interfaces with the logical module 404. Theelectrical module 404 includes a number of circuits, including front-enddriver and receiver circuits, clock circuitry, and analog circuitry 420.

The link layer 204 and the logical module 402 of the physical layer 202communicate over an interface 430. The interface 430 may include atransmit data path and control signals, as well as a receive data pathin the opposite direction along with associated control signals. Thecontrol signals control data transfer between the link layer 204 and thephysical layer 202.

The smallest unit of information transferred to/from the link layer 204over the interface 430 is referred to as a “flit.” In contrast, thesmallest unit of data transferred from one agent to another at thephysical layer 202 is referred to as a “phit.” The transmit circuitry(Tx) for one agent sends phits over the link 304, 306 to the receivecircuitry (Rx) of another agent. The link layer 204 relies on thephysical layer 202 to frame one or more physical layer units of transfer(phits) into the link layer unit of transfer (flit) before suchinformation is transferred over the interface 430.

The link layer 204 is responsible for reliable data transfer between 2CSI agents 320. To this end, the link layer 204 maintains a retry buffer470. Flits sent by one agent 320 to another agent 320 are buffered inthe retry buffer 470 by the link layer 204 of the transmitting agent(assuming that such flits are retry-enabled). The retry buffer may beimplemented for at least one embodiment as a first-in-first-out (FIFO)circular buffer. If the sending agent receives an indication from thereceiving agent that an error occurred in the transmission of a flit,the buffered entry may be located in the retry buffer 470 and re-sent.

As is explained above, idle flits are sent across the link, duringnormal power operation, during times when the link would otherwise beidle. This is done to support proper operation of the link layer's 204flow control and retry scheme. Conversely, not sending anything acrossthe link during such times would, during normal power operation, resultin arbitrary voltage on the link. Ordinarily, the receiver would try totranslate such arbitrary voltage to some random combination of bits,which would then be forwarded to the link layer.

The link layer may perceive these random bits as an unrecognized flit,hence a transmission error, and request a retry. Because thetransmitter's retry buffer 470 would not have an entry corresponding tothe retry request made by the receiver, the flow control mechanism wouldbreak down.

Sending idle packets, which are recognizable by link layer 204, avoidsthe above problem. However, it should be noted that idle packets do notcarry any meaningful payload data, but still result in powerconsumption. Accordingly, the inventors have determined that, ratherthan consume power by sending idle flits during periods of linkinactivity, power savings may be realized by putting the link into a lowpower state. For at least one embodiment, the flow control mechanism issuspended during the low power state, which is discussed in furtherdetail below.

The physical layer-link layer interface 430 may also include acommand/response (“Cmd/Rsp”) interface via which the link layer 204 andphysical layer 202 communicate commands. For example, the link layer 204may instruct the physical layer 202 to enter the low power state usingthe Cmd/Rsp portion of the interface 430.

This low power state may be entered by one direction of the physicallink, independent of the other direction (see 304, 306). During such lowpower state, referred to herein as L0s, portions of the electricalmodules 404 of the agents 320 a, 320 b may be powered down. For at leastone embodiment, the portions of the electrical modules 404 are powereddown during L0s state according to a pre-determined policy, based on aconfigurable wakeup time value. For at least one embodiment, the logicalmodules 402 for each of the agents 320 remain powered on during the L0sstate.

For the L0s state, the uni-directional links 304, 306 are placed in theElectrical Idle (EI) state, where both halves of a differential pair aredriven to a common voltage value. For at least one embodiment, the EIstate is maintained by driving both halves of the Tx differential pairto ground, although any voltage value may be selected.

Exit from L0s state is facilitated through activity detect analogcircuitry on Rx differential pairs. This activity detect analogcircuitry may constitute all or part of the analog circuitry 420illustrated in FIG. 4. The activity detect analog circuitry 420 isturned on when the Rx side of a unidirectional link enters L0s state. Incontrast, the activity detect analog circuitry 420 is not powered onduring other operational states of the unidirectional link, including anormal power state. For at least one embodiment, turning off analogactivity detectors during normal operation improves the receiver's noisemargin. This, in turn, may allow the link to operate at higherfrequencies.

While the activity detectors 420 are powered on during L0s state, theyinterpret a break from EI state on the Rx differential pair as anindication to exit the L0s state. Such break occurs when the transmitside of the uni-directional link breaks EI by driving the Txdifferential pair to a predefined voltage value, such a voltage thatrepresents logic 1. Of course, other voltage values may be utilized,such as. For example, a voltage value that represents logic 0.

The hierarchy of layers as shown in FIG. 2 and FIG. 4 should not betaken to be limiting. For instance, one or more embodiments may includethe logical module 402 as part of the link layer 204 rather than part ofthe physical layer 202.

Also, although each agent 320 is illustrated in FIG. 4 as having onlyone port (i.e., one Tx-Rx pair), one of skill in the art will recognizethat an agent 320 may include multiple ports.

FIG. 5 is a block diagram illustrating two sample unidirectional links304, 306 for a physical interconnect between the ports of two CSI agents502, 504. For convenience, a first CSI agent 502 of FIG. 5 is referredto herein as Agent A and a second CSI agent 504 is referred to herein asAgent B. Although each Agent is illustrated as having a single port inFIG. 5, one of skill in the art will recognize that either or both ofthe Agents 502, 504 may include additional ports (not shown). FIG. 5illustrates that, for at least one embodiment, one link 306 of aphysical interconnect may remain active in a normal power state whilethe other link 304 of the physical interconnect is in the low powerstate.

FIG. 5 illustrates that entry into L0s low power state for auni-directional link, such as link 304, may be triggered when an outputtransaction queue 510 associated with the link layer 204 (see FIG. 2) ofthe agent 504 is empty. If the transaction queue 510 for a port, such asthe Agent B port, is empty, the Tx circuitry 528 for the agent sends anL0s-enter packet across the unidirectional link 304 to indicate that theRx circuitry 526 for the other port, such as the Agent A port, shouldenter the low power state.

For each physical layer portion of a port 350, the Rx and Tx circuitry522, 524, 526, 528 illustrated in FIG. 4 may include one or moredifferential pairs. For at least one embodiment, each such element 522,524, 526, 528 includes 20 data/control lanes as well as a lane thatcarries the forwarded clock.

FIGS. 4 and 5 are referenced together for further discussion of thetransaction queues 510 a, 510 b. For at least one embodiment, the linklayer 204 performs the determination of whether a transaction queue 510is empty. If a port detects an L0s-enter trigger condition, the linklayer 204 (Tx) so indicates to the physical layer 202 (Tx) over theinterface 430. The physical layer 202 may then initiate the L0s-enterpacket on the link 304. The link layer 204 also sends an L0s-enterpacket over the link 340, to indicate to the Rx port that L0s mode isdesired. The link layer 204 (Rx) of the remote port, upon receiving L0senter packet, may inform its physical layer 202 (Rx) to enter L0s state.

For at least one embodiment, the L0s-enter trigger condition may besatisfied when an agent detects that its transaction queue 510 containsless than a minimum number of packets awaiting transmission. For atleast one other embodiment, however, the physical layer 202 may performdetection of an empty transaction queue 510. For other embodiments,detection of a trigger condition for entry of the L0s state may beperformed in other manners that are triggered, for instance, by softwareor by power management processing.

Entry into the L0s low power state thus may be initiated when a triggercondition is met. For at least one embodiment, the trigger conditionoccurs when an agent's transaction queue 510 is empty. For otherembodiments, different or additional conditions may trigger entry intoL0s state.

FIG. 6 is a timing diagram illustrating at least one embodiment of amethod for entering a low power state for a uni-directional link of aphysical interconnect. FIG. 6 is discussed herein in conjunction withFIG. 4. FIG. 6 illustrates actions performed by both the Tx and Rxcircuitry of a link. The actions taken by the Tx circuitry at the port350 of Agent B are indicated on the first axis 602. The actions taken bythe Rx circuitry of the port 350 of Agent A are indicated on the secondaxis 604. It is assumed for at least one embodiment that, prior to theactions described in connection with FIG. 6, the uni-directional link isin a normal operating state.

FIG. 6 illustrates that, at time B1, the transmitting agent, Agent B,begins sending the L0s-enter flit packet, which is designated asPM.LinkEnterL0s 620 in FIG. 6. The time interval between B1 and B2 isthe time it takes to send all bits of the L0s-enter packet 620 acrossthe physical link between Agent B and Agent A. This length of time maybe represented by a timer, t_(L0s) _(—) _(PKT)[UI]. Sending of thePM.LinkEnterL0s packet notifies the receiver that it should enter thelow power mode. Such notification is thus achieved digitally, viatransmission of packet data, rather than via utilization of analogactivity detectors. As is explained in further detail below, analogactivity detectors (see 420, FIG. 4) are not active during the normaloperating state.

The timer t_(L0S) _(—) _(PKT) reflects the number of unit intervals (UI)required to transfer to the PM.LinkEnterL0s flit to agent A. This numberdepends on the link transfer ratio, discussed immediately below. As ismentioned above, the physical layer 202 (FIG. 4) transfers data on thelink 304, 306 (FIG. 4) at a phit granularity. For at least oneembodiment, a phit is 20 bits for a full-width link. A phit may be 10bits for a half-width link and may be 5 bits for a quarter-width link.The time it takes to send one phit is referred to herein as a unitinterval (UI).

The link transfer ratio is the number of phits per flit. For afull-width link that transmits 20 bits per UI, it takes 4 UI's to sendan 80-bit four-phit flit. The transfer ratio is thus 4:1. Thus, for afull-width link, the value of t_(L0S) _(—) _(PKT) is four. However, forsituations wherein the physical link is transmitting a half- orquarter-width number of bits per UI, the time to transmit the L0s-enterflit may, accordingly, take longer. For a half-width link that transmits10 bits during each UI, the link transfer ratio for an 80-bit flit wouldbe 8:1. Similarly, the link transfer ratio for an 80-bit flit would be16:1 for a quarter-length (5-bit) link.

At time B2, Agent B may then begin sending an optional idle flit 622.For at least one embodiment, the idle flit 622 is not retry-enabled andcarries no meaningful payload, but carries error detection information.For other embodiments, the error detection information carried by anidle flit 622 is not useful. For such embodiments, the idle flit 622 isoptional.

The time interval between time B2 and time B3 represents the amount oftime it takes to send the idle flit 622 over the physical link. Thistime interval is illustrated in FIG. 6 as time value, t_(FLIT)[UI]. Thetime value t_(FLIT) reflects the actual number of unit intervals (UI)used to transfer to an idle flit to agent A. As with t_(L0S) _(—)_(PKT), the number reflected by t_(FLIT) depends on the link transferratio.

After sending the idle flit 622, the link layer 204 at the Tx circuitryof the Agent B port 350 b is decoupled from the physical layer 202 atthe Tx circuitry of the Agent B port. As a result, the link layer 204for Tx port of Agent B 350 b will not initiate sending of any more flitsover the link until the low power state is exited. Thus, flow control onthe Tx side of link layer 204 is temporarily suspended, and thecorresponding physical layer 202 of the Agent B port 350 b is free topower down portions of its circuitry without interfering with the flowcontrol mechanism.

For at least one embodiment, the decoupling is accomplished by turningoff certain control signals of interface 430 (FIG. 4). For alternativeembodiments, the decoupling need not be accomplished through aninterface, such as interface 430 illustrated in FIG. 4. Instead, othermechanisms may be utilized so that the physical layer 202 can indicateto the link layer 204 that the control flow mechanism should besuspended. For example, the physical layer 202 and link layer 204 maycommunicate by storing and reading values in a common memory storagearea.

At time B3, both the PM.LinkEnterL0s flit 620 and the optional idle flit622, if utilized, have been fully transmitted to the receiving port 350a of Agent A. Thus, at time B3 the Tx port 350 b for Agent B has sentall meaningful data used to notify the Rx port for Agent A that Agent Ashould enter the low power state. Theoretically, the Tx port for Agent Bcould transition into EI state at this time (B3). However, for at leastone embodiment the Tx circuitry is not immediately powered down at timeB3.

Abruptly transitioning to EI may degrade the signal quality of the lastvalid phit sent across the link. (The last valid phit may be the lastphit of idle flit 622, if used, or may be the last phit ofPM.LinkEnterL0s 620). The receiver may interpret the degraded signal asa transmission error. Thus, for at least one embodiment, Tx maintains adifferential voltage between all its differential pairs for a period oftime,_(TL0S) _(—) _(Enter) _(—) _(Tx) _(—) _(DRV), between B3 and B4.

As used herein, T_(L0S) _(—) _(Enter) _(—) _(Tx) _(—) _(DRV), as well asany other timer name beginning with an uppercase “T”, may be aconfigurable timer value. Such configurable timer values may bemaintained in one or more architecturally-visible control registers. Forat least one embodiment, a predetermined value for such timers may beset by firmware or software. For at least one embodiment, thevalue_(TL0S) _(—) _(Enter) _(—) _(Tx) _(—) _(DRV) is configurable andmay be expressed as UI, and thus can be programmed to suit link losscharacteristics and link frequency.

At least one alternative embodiment may bypass the timing sequencebetween B3 and B4. Depending on the loss characteristics of the link andoperating frequencies, it may not be useful, for some embodiments, tomaintain differential swing during the time frame between B3 and B4.

At time B4, the transmitting agent, Agent B, begins entering L0s stateitself. At this point, transition of the link to EI state is initiatedand circuits in Tx portion of Port B begin to power-down. Accordingly,FIG. 6 illustrates that the time it takes for Agent B to begin enteringL0s state, after L0s entry processing begins at time B1, can bedetermined as: (t_(L0S) _(—) _(PKT)+t_(FLIT)+T_(L0S) _(—) _(Enter) _(—)_(Tx) _(—) _(DRV))[UI].

After Agent B begins powering down circuitry at time B4 in order toenter the low-power state, it takes some amount of time for thepower-down to occur. FIG. 6 illustrates that this time, between B4 andB5, may be reflected as a time value, t_(L0S) _(—) _(Enter) _(—) _(Tx)_(—) _(off), which indicates the time required for Port B to turn offthe desired portion of its electrical module 404 and complete itstransition to EI state. Exactly which portions of the electrical module404 are to be turned off is driven by the current value of a wakeuptimer, which may be configurable. That is, only those portions of theelectrical module 404 are turned off during the interval between B4 andB5 that can be subsequently powered back on within the current value forthe L0s wakeup timer, T_(L0S) _(—) _(WAKE) (see FIG. 7). At time B5, alldesired Tx circuitry for the Agent B port is now powered down (such thatthe link is in the EI state); the Tx portion of the port 350 b at AgentB is now in the L0s state.

For at least one embodiment, the L0s wakeup timer, T_(L0S) _(—) _(WAKE),is a configurable timer that is maintained in an architecturally-visiblecontrol register. For at least one embodiment, the value for the timermay be set by firmware on both link ports prior to entering L0s state.As is stated above, all timers discussed herein that follow thenomenclature of beginning with an uppercase T may be similarlyconfigurable. For alternative embodiments, however, one or more of suchtimers may be, rather than configurable values, constant values. Forexample, such timer values may be built in as power-on default values.

The wakeup timer T_(L0S) _(—) _(WAKE) may be utilized to provideflexible power consumption control. As is stated above, this timer maybe used to determine which of the electrical module portions to turn offduring L0s state. Only those portions that can meet the desired latency,as reflected by the wakeup time value in T_(L0S) _(—) _(WAKE), whentransitioning back to an on state from an off state are turned offduring L0s.

It should be noted that Port A and Port B do not necessarily initiateentering L0s at the same time. The different may be due to, for at leastone embodiment, the non-zero time it takes the L0s information to bereceived by Port A. As such, at least one embodiment provides that PortB stays in L0s for a minimum amount of time, T_(L0S) _(—) _(SLEEP) _(—)_(MIN), before it may start exiting out of L0s into normal link state.The value of T_(L0S) _(—) _(SLEEP) _(—) _(MIN) timer is governed by thefollowing equation:T _(L0S) _(—) _(SLEEP) _(—) _(MIN)=max value of t _(Rx) _(—)_(PHY->LL)+max value of t _(Rx) _(—) _(LL->PHY)+max value of T _(L0S)_(—) _(Enter) _(—) _(Rx) _(—) _(off) −T _(L0S) _(—) _(ENTER) _(—) _(Tx)_(—) _(DRV)−min value of t _(L0S) _(—) _(Enter) _(—) _(Tx) _(—) _(off)

T_(L0S) _(—) _(SLEEP) _(—) _(MIN) is a constant timer value that thephysical layer 202 receives from an external source. The nature of thistimer as an externally-generated parameter is denoted by the uppercase“T” of its label. FIG. 6 illustrates, then, that T_(L0S) _(—) _(ENTER)_(—) _(Tx) _(—) _(DRV) is also an externally-generated constant timervalue. T_(L0S) _(—) _(ENTER) _(—) _(Tx) _(—) _(DRV) indicates the numberof UI during which the Tx side of the link should drive the Txdifferential pairs high after transmitting the last flit prior toentering L0s state.

For at least one embodiment, they physical layer 202 expects theseexternally-provided timer values, along with the current L0s-wakeuptimer discussed above, to be loaded into one or morearchitecturally-visible control registers by a higher layer before entryinto L0s state is initiated. In contrast, other time values, denotedwith labels having a lowercase “t”, are internal circuit variables.

On the Rx side, FIG. 6 illustrates actions of the Rx circuitry of theAgent A port at axis 604. FIG. 6 illustrates that, at time A1, Agent Abegins receiving the first phit of the PM.LinkEnterL0s flit 620. Thetimer discussed above, t_(L0S) _(—) _(PKT)[UI], represents the time ittakes for the entire flit 620 to be received. For at least oneembodiment, as is discussed above, the time represented by t_(L0S) _(—)_(PKT) may be four for a link operating at full width.

At time A2, the Rx circuitry has completed reception of thePM.LinkEnterL0s flit 620. For embodiments the employ the idle flit 622,Rx circuitry begins receiving the first phit of the optional idle flit622 at time A2. Again, the time value, t_(FLIT)[UI] represents the timefor the idle flit 622 to be received by Agent A. This time value, for atleast one embodiment, is four UI for a link operating in full-widthmode. For at least one embodiment, reception of the idle flit 622 iscomplete at time A3.

FIG. 6 reflects that, at time A2, the physical layer of the Rx circuitryfor the Agent A port has fully received the first flit 620 and may beginsending such packet to the link layer 204 (FIG. 4) over the interface430 (FIG. 4). [It will be noted that the physical layer accumulates allphits of a flit before forwarding, at flit granularity, data to the linklayer 204 (FIG. 4)] Thus, FIG. 6 illustrates that the first flit 620 maybe sent to the link layer 204 while, at the same time, the physicallayer may be receiving the second flit 622. Such parallel processing mayproceed in a pipelined fashion.

At time A3, the Rx circuitry has competed receipt of the optional secondflit 622. Thus, at time A3 the physical layer may send the second flit622 to the link layer 202 (FIG. 4) over interface 430 (FIG. 4). As isstated above, the flit 622 is transmitted on flit granularity after itslast phit has been received. A time value, t_(Rx) _(—) _(PHY->LL),represents the internal delay for the flit to reach the link layer 204(FIG. 4) of Agent A from the physical layer 202 (FIG. 4). A second timevalue, t_(RX) _(—) _(LL->PHY) the time for the link layer 204 (FIG. 4)at Agent A to notify the physical 202 layer to enter L0s state, and forthe signal to reach the physical layer 202.

In the meantime, the link layer 204 (FIG. 4) may have already receivedthe PM.LinkEnterL0s flit 620 that was transmitted to it at time A2. Toavoid false advancement of pointers, the link layer may disableadvancement of its buffer pointer 480, since no further flittransmissions will be initiated by the Tx circuitry of the transmittingagent during L0s state. This halting of the advancement of the localbuffer pointer 480 is performed despite that the fact that the linklayer 204 (FIG. 4) has not yet informed the physical layer 202 that itshould enter L0s state.

FIG. 6 thus illustrates that, during L0s, the link layer 204 disablesadvancement of the local buffer pointer 480 for the Rx side of the AgentA port. However, the advancement of its index into the retry buffer 470for the Tx side of the Agent A port may remain active, since only oneunidirectional link of the physical interconnection between Agents A andB is entering L0s state.

At time A3, the link layer 204 for the port 350 at Agent A has beennotified, via receipt of the PM.LinkEnterL0s flit 620 (and, optionally,idle flit 622) to enter the L0s state. Beginning at time A3, the linklayer ignores all subsequent flits until link exits from L0s back to thenormal state. Between time A3 and A4, the physical layer 202 is unawarethat the link layer 204 has received a notification to enter L0s state.Thus, the physical layer 202 may continue to send flits to the linklayer 204. However, because the link is in EI state between A3 and A4,the flits sent by physical layer 202 are not meaningful. The link layer204 ignores transmission of such non-meaningful flits.

Between time A3 and A4, the link layer 204 for the Rx port of Agent Aindicates to the physical layer 202 that it should enter L0s. This maybe accomplished by turning off certain control signals of interface 430.Alternatively, other manners of communication between the physical layer202 and physical layer 204 may be employed, such as the common storagearea approach discussed above.

At time A4, the receiving agent, Agent A, begins entering L0s state.Accordingly, FIG. 6 illustrates that the time it takes for Agent A tobegin entering L0s state, after it begins receiving the first L0s-entryphit at time A1, can be determined as: (t_(L0S) _(—)_(PKT)+t_(FLIT)+t_(Rx) _(—) _(PHY->LL)+t_(Rx) _(—) _(LL->PHY))[UI].

At time A4, the physical layer 202 for the Rx port of Agent A knows thatit should enter L0s and hence stops sending non-meaningful flits to thelink layer 204. Thus flow control is temporarily disabled starting attime A4. As is discussed below, flow control may be reestablished byturning on the disabled control signals on the interface 430 when the Rxport for Agent A exits L0s. Re-establishing such control signalsindicates to the link layer 204 on Port B that the link layer 204 resumeaccepting flits. Again, alternative schemes may be used to communicatebetween the physical layer and the link layer that the flow controlmechanism should be re-established.

During the time frame between A4 and A5, the physical layer 202 forAgent A begins to power down portions of its Rx circuitry. FIG. 6illustrates that the time between A4 and A5 may be reflected in a timer,t_(L0S) _(—) _(Enter) _(—) _(Rx) _(—) _(off), which indicates the timerequired for Port A to turn off the desired portion of its electricalmodule 404.

Exactly which portions of the electrical module 404 to be turned off isdriven by the current value of the configurable wakeup timer. That is,only those portions of the electrical module 404 are turned off duringthe interval between A4 and A5 that can be subsequently powered back onwithin the current value for the configurable L0s wakeup timer, T_(L0S)_(—) _(WAKE). As is stated above, for at least one embodiment thecurrent value for the configurable L0s wakeup timer is maintained in acontrol register and may be set by firmware on both link ports prior toentering L0s state. For at least on embodiment, control logic of thelogical module 402 selects the portions to be powered down, based on thewakeup time value reflected in T_(L0S) _(—) _(WAKE).

At time A5, the Rx side of the port for Agent A is in L0s state. Txdifferential pairs of the link are being driven to EI state and thedesired Rx circuitry has been powered down. If the Tx differential pairswere to break electrical idle, the powered-down circuitry on the Rx sidewould not detect the break.

Accordingly, between times A4 and A5 the analog activity detector 420 isturned on in order to detect a subsequent transition out of L0s state.

Time A5 represents the earliest time that Rx circuitry of the A-sideport of the link could respond to a wake up signal from Agent B. As isdiscussed above, the T_(L0S) _(—) _(SLEEP) _(—) _(MIN) timer is utilizedto prevent Agent B from sending such a wake up signal until Agent A hasfully entered L0s state.

For at least one embodiment, the activity detectors 420 that havecompleted powering up by time A5 monitor activity on the link to detecta break from Electrical Idle. An analog activity detector 420 for eachof the Rx differential pairs of the B-side port may be turned on. For analternative embodiment, activity detectors 420 are turned on only forone or more selected Rx differential pairs. To detect a transition outof the electrical idle state, the analog activity detectors 420 monitorfor differential voltage on the Tx lanes.

FIG. 7 is a timing diagram illustrating at least one embodiment of amethod for exiting from a low power state for a uni-directional link ofa physical interconnect. FIG. 7 is discussed herein in conjunction withFIGS. 4 and 6. FIG. 7 illustrates actions performed by both the Tx andRx circuitry of a link. The actions taken by the Tx circuitry at theport 350 of Agent B are indicated on the first axis 702. The actionstaken by the Rx circuitry of the port 350 of Agent A are indicated onthe second axis 704.

The exit mechanism illustrated in FIG. 7 uses an analog activitydetection scheme (see analog activity detectors 420 for Agent A). FIG. 7assumes that, prior to time B1, Agent A 320 a (FIG. 4) and Agent B 320 b(FIG. 4) are in L0s state, such that selected portions of Tx circuitryof the Agent B port 350 b and selected portions of Rx circuitry of theAgent A port 350 a may be powered down. It is also assumed that theTx-Rx link between such respective ports 350 b, 350 a of Agents B and Ais in EI state. FIG. 7 also assumes that the analog activity detectors420 for Rx circuitry of Agent A have been turned on.

Generally, the L0s state exit policy is based on a pre-determinedwake-up timer, T_(L0S) _(—) _(WAKE), which is discussed above. TheT_(L0S) _(—) _(WAKE) timer is common to both ports of the link, and maybe programmed into a control register by a layer above the physicallayer 202. (For alternative embodiments, of course, the T_(L0S) _(—)_(WAKE) timer value may be a constant value rather than a programmablevalue, or may be a self-generated value internal to the physical layer202.) According to at least one embodiment of the L0s state exit policy,both ports are required to wake up their powered-down electrical module404 circuitry within the time specified by the T_(L0S) _(—) _(WAKE)timer. Several predetermined wakeup values may be defined in analternative embodiment that provides varying levels of wakeup speed. Theappropriate one of the plurality of wakeup values may be selected toachieve the desired wakeup speed.

To initiate re-entry into a normal operating state, referred to hereinas L0 state, a higher layer, such as the link layer 204, sends an L0sexit signal 710 to the Tx port of the sleeping link.

The sending of such exit signal may be triggered upon occurrence of atrigger condition. For at least one embodiment, for example, sending ofthe L0s exit signal 710 may be triggered when a flit is entered, orabout to be entered, into the transmitting agent's output transactionqueue 510 b. For an alternative embodiment, the trigger condition may besatisfied when a threshold number of flits have been entered intotransaction queue 510 b. For other embodiments, other trigger conditionsmay be utilized, including those triggered by software, a platformsignal, a power management event, or the like. FIG. 7 illustrates that,in response to the L0s exit signal, Tx side of the link then initiatesthe L0s exit sequence.

At time B1 the physical layer 202 of Agent B signals the physical layer202 of Agent A to exit L0s state. Tx differential pairs of the port 350for Agent B thus break the electrical idle state on the lanes they aredriving. That is, each of the Tx differential pairs begins driving itssignals such that the expected differential voltage exists between eachof its two lines. FIG. 7 illustrates that, for at least one embodiment,a value of logic “1” is driven on the differential pairs, such that theD+ voltage is at a high value (binary 1) and the D− voltage is at a lowvalue (binary 0). In an alternative embodiment, different values may bedriven on the differential pair, such as D+=binary 0 and D−=binary 1.Any values that produce the expected voltage differential may beemployed.

In addition, at time B1 the physical layer 202 of Agent B starts wakingup the powered-down portions of its electrical module 404.

The analog activity detectors 420 for the Rx pairs of Agent A willeventually recognize the break from electrical idle that is being drivenon the Tx lanes of the link. For at least one embodiment, it isdifficult to predict precisely how long it will take for the activitydetectors 420 to detect and recognize the break from electrical idle.Being analog in nature, the time required to detect a differential swingis expected to vary among activity detectors 420. Such variability maybe caused by one or more factors, including (but not limited to)operating conditions like voltage and temperature as well as andmanufacturing process variations among different components. Despitethis variability, it is possible to predict the minimum and maximumdebounce time required by activity detectors 420 to sense a break fromelectrical idle.

For at least one embodiment, a configurable timer T_(L0S) _(—) _(EXIT)_(—) _(DEBOUNCE) _(—) _(MAX) is used to indicate the maximum debouncetime for the analog activity detectors 420. As is discussed above, theuse of an uppercase “T” in the label of this timer indicates that atleast one embodiment of T_(L0S) _(—) _(EXIT) _(—) _(DEBOUNCE) _(—)_(MAX) is a timer value that the physical layer 202 receives from anexternal source. For other embodiments of course, the timer value may beinternally calculated by the physical layer 202 or may be received as apower-on default value.

For at least one embodiment, the value of T_(L0S) _(—) _(EXIT) _(—)_(DEBOUNCE) _(—) _(MAX)[UI] reflects the maximum debounce time,expressed in terms of UI, required by the activity detectors on theAgent A port to detect the break from the electrical idle state. For atleast one embodiment, such value reflects the maximum value taking intoaccount possible process, voltage and temperature variations.

Thus, time A2 reflects the latest time at which the Rx activitydetectors will have detected and recognized the break from electricalidle 715 that began transmitting at time A1. This break indicates an L0sexit condition. At time A2, however, the electrical module 404 circuitryfor Tx at the port 350 b for Agent B may not have fully powered up. FIG.7 illustrates an embodiment wherein Tx takes longer to wake up itselectrical module 404 circuitry than it takes for Rx's activitydetectors 420 to recognize the wakeup signal. Tx circuitry at Port B 350b drives a differential swing for at least a time period of T_(L0S) _(—)_(EXIT) _(—) _(DEBOUNCE) _(—) _(MAX). For at least one embodiment, adifferential swing is maintained on all differential pairs of Tx untiltime B4.

For other embodiments, the Tx electrical module may fully power upbefore the Rx activity detectors recognize the break from electricalidle. For either embodiment, time B3 reflects the time at which a) Txelectrical module 404 circuitry is fully awake and b) Rx activitydetectors 420 have had the maximum required time to receive andrecognize the wakeup signal.

FIG. 7 illustrates that the time frame indicated by the arrow 712between times B1 and B3 represent the time it takes for Agent A to fullypower back up those portions of the electrical module 404 that werepowered down during the L0s state. This time is indicated by t_(L0S)_(—) _(Exit) _(—) _(Tx) _(—) _(On), whose value reflects the time takenby the port at Agent B to turn on its electrical module 404. The timet_(L0S) _(—) _(Exit Tx) _(—) _(On) may be calculated as t_(L0S) _(—)_(Exit) _(—) _(Tx) _(—) _(On)<=T_(L0S) _(—) _(WAKE)−T_(L0S) _(—) _(EXIT)_(—) _(DEBOUNCE) _(—) _(MAX)−T_(L0S) _(—) _(EXIT) _(—) _(NOP). From thisequation, it can be noted that Tx at Port B 350 b selects portions ofits circuits to be powered-off, upon entering L0s, such that thesepowered-down circuits can be powered-on within a time period of t_(L0S)_(—) _(Exit) _(—) _(Tx) _(—) _(On).

At time B3, the physical layer at the Agent B port for the formerlysleeping link is fully “awake.” However, before Agent B resumestransmission of phits across the link to Agent A, certainsynchronization actions should take place. Such synchronization actionsare discussed immediately below. However, it should be noted that theembodiments discussed herein do not require a full re-initialization ofthe physical layer 202 when exiting the L0s state because the internallogic continues to maintain flit boundaries during L0s state. Incontrast to other protocols which may require, at the least, a fasttraining sequence upon exit of L0s state in order to retrain thephysical layer, the two synchronization actions discussed below arerelatively fast. While synchronization sequences for physical layerre-initialization for other protocols may require relatively large timeperiods, the synchronization actions discussed below may require, for atleast one embodiment, only about five nanoseconds.

The first synchronization action occurs between times B3 and B4. Duringthis time, an internal delay is imposed in order to ensure that thefirst phit transmitted by Tx after exiting L0s state is on a flitboundary. That is, if B3 occurs outside a flit boundary, Tx waits untilthe next flit boundary before beginning to send phits to the Rxcircuitry of the Agent A port. The time t_(L0S) _(—) _(Exit) _(—) _(Tx)_(—) _(Wait) reflects the amount of time that the port of Agent A waitsuntil the next flit boundary.

Implicit in the preceding paragraph is the fact that, for at least oneembodiment, the physical layer for the Tx circuitry of Agent A includeshardware counters that remain active even when other circuitry of thephysical layer 202 has been powered down during L0s state. During normaloperation, Tx sends the phits for a full flit packet at certainintervals. For example, if the width of the link is 20 bits, and thelink layer (204) is transmitting 4-phit flit packets (80 bits), then ittakes four cycles to transmit each flit. Thus, we say that the flitboundary occurs every four cycles. Thus, during normal operationtransmission of the first phit of a flit is initiated at a four-cycle“flit boundary.” Data from the hardware counters may be utilized totrack flit boundaries. Rather than being limited to a counter, flitboundaries may be tracked by any type of indicator.

Thus, between times B3 and B4 a first synchronization action takesplace—transmission of the first phit is delayed so that it will occur ona proper flit boundary, as measured by hardware flit boundary indicatorsthat are allowed to continue running during the L0s state.

At time B4, then, the Tx circuitry of the physical layer for Agent B ispowered up and is on a proper flit boundary. This is the earliest timephysical layer can begin transmitting flits from the link layer 204.However, the time period between B1 and B4 is still less than T_(L0S)_(—) _(WAKE). Hence, the physical layer for Agent B does not yet sendany control/data flits from link layer 204, but may send idle flits.

This period of sending idle flits from times B4 to B5 represents thesecond synchronization action. This time period accounts for thevariability in activity detector debounce time at the receiver. Duringthis time, idle flits are sent from Tx of Agent B to Rx of Agent A untilboth Agent B and Agent A are “synchronized” in the sense that both havefully exited the L0s state and are operating normally in the L0 state.

FIG. 7 illustrates that the length of the synchronization period betweenB4 and B5 is indicated by a configurable timer, T_(L0S) _(—) _(EXIT)_(—) _(NOP). This timer indicates the minimum amount of time, expressedin UI, that idle flits should be sent during the second synchronizationaction. For at least one embodiment, the value of T_(L0S) _(—) _(EXIT)_(—) _(NOP) is arrived at by estimating the difference between theminimum and maximum wakeup times for the Rx analog activity detectors.Such value may be derived, for example, by estimating the maximumdebounce value, T_(L0S) _(—) _(EXIT) _(—) _(DEBOUNCE) _(—) _(MAX),across all processes, voltage and temperature (PVT) variations and thendetermining the maximum variance in the maximum debounce time acrossPVT. Similarly, a minimum debounce value, t_(L0S) _(—) _(EXIT) _(—)_(DEBOUNCE) _(—) _(MIN), may be determined.

At time B5, the port on the Tx side of the link is in the L0 state andhas sent idle flits long enough to satisfy the desired wakeup timevalue, T_(L0S) _(—) _(WAKE). At this time, the Tx circuitry of Agent Bbegins sending actual flits as requested by the link layer 204. Also,the physical layer 202 may turn on some control signals on interface 430to indicate to link layer 204 that the former is ready to accept andtransmit flits from the latter.

On the Rx side, FIG. 7 illustrates on axis 702 that, at time A1, theactivity detectors 420 of the Agent A physical layer 202 start sensingthat the link has transitioned from electrical idle to an active state.After expiration of the actual analog activity detector debounce time,t_(L0S) _(—) _(EXIT) _(—) _(DEBOUNCE), the Rx portion of the port atAgent A starts waking up its circuitry at time A2. The time reflected byt_(L0S) _(—) _(EXIT) _(—) _(DEBOUNCE) in FIG. 7 represents the timeactually taken by the Rx activity detectors 420 to sense the link activestate. This actual value will be between the estimated T_(L0S) _(—)_(EXIT) _(—) _(DEBOUNCE) _(—) _(MAX) and t_(L0S) _(—) _(EXIT) _(—)_(DEBOUNCE) _(—) _(MIN) values discussed above. At time A2, the Rxactivity detectors 420 are turned off.

At time A3, the Rx portion of the port at Agent A has completed wakingup the electrical module 404 circuitry that was previously shut downupon entry to L0s state. The interval between times A2 and A3,represented as t_(L0S) _(—) _(Exit) _(—) _(Rx) _(—) _(On), reflects thetime permitted for Rx to power up the electrical module 404 circuitry.The time t_(L0S) _(—) _(Exit) _(—) _(Rx) _(—) _(On) may be calculated asT_(L0S) _(—) _(WAKE)−T_(L0S) _(—) _(EXIT) _(—) _(DEBOUNCE) _(—) _(MAX).

One will note that FIG. 7 illustrates that some idle flits may be sentby Tx at Agent B before Agent A has reached time A3. In other words,some idle flits may be received by Agent A before the Rx circuitry hasfully powered up and entered L0 state. This is acceptable; such flitsare ignored by Rx. Such approach does not cause errors, since the flowcontrol mechanism for Agent B does not, for at least one embodiment,expect an acknowledgment for idle flits.

FIG. 7 illustrates that the first synchronization action(synchronization onto flit boundaries) mentioned above is also taken forRx circuitry. At time A3, the Rx circuitry for the Agent A port hasfully powered up and is ready to enter the L0 state. Assuming that A3does not occur on a flit boundary, the port waits until the next flitboundary before entering L0 state. FIG. 7 illustrates that the delay toaccomplish the flit boundary synchronization for Agent A is reflected byt_(L0S) _(—) _(Exit) _(—) _(Rx) _(—) _(Wait). Thus, at time A4 the Rxcircuitry for the Agent A port is now synchronized to a flit boundary.

At time A4 the Rx circuitry for the Agent A port has fully entered L0state. At such time, the physical layer 202 at Agent A turns on one ormore control signals on interface 430, begins receiving phits sent bythe Agent B port, and begins forwarding flits to the link layer 204.FIG. 7 illustrates that, prior to this time, the Rx circuitry may havemissed the first (N-1) idle flits. It is thus important that the numberof idle flits (N) be correctly calculated by Agent B such that the firstnon-idle flit arrives at the Rx circuitry of the Agent A port no earlierthan time A4. For at least one embodiment, the number, N, of idle flitsto be transmitted by Tx at Agent B between times B4 and B5 is calculatedbased on the value of T_(L0S) _(—) _(EXIT) _(—) _(NOP), discussed above.At time A4, the Rx side of the Agent A port is in the L0 state and maynow forward flits to the link layer at Agent A.

For some period of time between A4 and A5, the Tx circuitry at the AgentA port may continue to receive idle flits and forward these idle flitsto the link layer 204. The time <=T_(L0S) _(—) _(EXIT) _(—) _(NOP)[UI]may thus reflect the duration for which the physical layer at Agent Areceives idle flits and forwards them to the Agent A link layer.

FIG. 7 illustrates that a configurable timer, T_(L0S) _(—) _(WAKE),reflects that total time that each of Rx and Tx are permitted in orderto complete their wakeup sequence. As is stated above, the current valuefor at least one embodiment of this timer is set in a control registerby a layer higher than the physical layer 202. For at least oneembodiment, for example, this constant value is set by the BIOS (basicinput/output system). As is discussed above, this timer value is alsoutilized during the L0s-entry processing illustrated in FIG. 6 todetermine which portions of the Rx and Tx electrical modules 404 topower down during the L0s state. For at least one embodiment, only thosecircuits that can be powered back up within the time frame indicated byT_(L0S) _(—) _(WAKE) are powered down during FIG. 6 processing.

In summary, described above are a method 600 for placing a link of aphysical interconnect into a low power state and a method 700 forexiting the low power state. During the low power state, both signalsfor a differential pair of the link are placed into Electrical Idlestate. For at least one embodiment, the low power state (L0s) is enteredwhen an output transaction queue for a transmitter is empty. A low powerpacket is sent from the transmitter to the receiver to instruct thereceiver to enter the low power state. No handshake is expected from thereceiver, reducing the time needed to enter the low power state. Uponentering the low power state, the receiver turns on analog activitydetectors that are used to detect activity on the link.

The discussion above further discloses, in summary, that responsive to atrigger event, the transmitter signals the receiver to wake up from thelow power state by creating a pre-defined activity on the link. For atleast one embodiment, the predefined activity is a break from ElectricalIdle, a condition marked by a differential voltage across a differentialpair that is large enough to be sensed by activity detectors on theremote agent. This predefined activity is detected by the analogactivity detectors, which then wake up the receiver from the low powerstate.

Both the transmitter and receiver maintain internal hardware flitboundaries during the low power state. Accordingly, re-activation of thelink from low power state does not require re-initialization of the linklayer. Accordingly, the low power state may be exited without requiringa physical layer synchronization training sequence, such as thatperformed by other protocols, such as PCI-Express, upon exit from alow-power state. Eliminating the need for physical layerre-initialization allows for reduced wake-up latency in terms of thetime required to exit L0s mode and begin sending/receiving transmissionsover the link.

Embodiments of the methods disclosed herein may be implemented inhardware, software emulation, firmware, or a combination of suchimplementation approaches. Embodiments of the disclosed methods might beperformed by specific hardware components that contain hardwired logicfor performing the methods, or by any combination of programmed computercomponents and custom hardware components.

Software emulation embodiments of the methods may be implemented ascomputer programs executing on programmable systems comprising at leastone processor, a data storage system (including volatile andnon-volatile memory and/or storage elements), at least one input device,and at least one output device. Program code may be applied to inputdata to perform the functions described herein and generate outputinformation. The output information may be applied to one or more outputdevices, in known fashion. For purposes of this disclosure, a processingsystem includes any system that has a processor, such as, for example; anetwork processor, a digital signal processor (DSP), a microcontroller,an application specific integrated circuit (ASIC), or a microprocessor.

Software emulation embodiments may be provided as a computer programproduct which may include a machine or computer-readable medium havingstored thereon instructions which may be used to program a computer (orother electronic devices) to perform a process according to oneembodiment of the present invention. The computer-readable medium mayinclude, but is not limited to, floppy diskettes, optical disks, CompactDisc, Read-Only Memory (CD-ROMs), and magneto-optical disks, Read-OnlyMemory (ROMs), Random Access Memory (RAMs), Erasable ProgrammableRead-Only Memory (EPROMs), Electrically Erasable Programmable Read-OnlyMemory (EEPROMs), magnetic or optical cards, flash memory, or the like.

In the preceding description, various aspects of an apparatus, systemand methods for performing dynamic management of a compiled code regionare disclosed. For purposes of explanation, specific numbers, examples,systems and configurations were set forth in order to provide a morethorough understanding. However, it is apparent to one skilled in theart that the described method and apparatus may be practiced without thespecific details. It will be obvious to those skilled in the art thatchanges and modifications can be made without departing from the presentinvention in its broader aspects.

While particular embodiments of the present invention have been shownand described, the appended claims are to encompass within their scopeall such changes and modifications that fall within the true scope ofthe present invention.

1. A method comprising: detecting, during operation in an electricalidle state, an electrical idle exit condition; enabling, responsive tothe electrical idle exit condition, receiver circuitry; and disabling,responsive to the electrical idle exit condition, an analog activitydetector.
 2. The method of claim 1, further comprising: resumingoperation according to a normal power state; wherein said resuming isperformed exclusive of performing a data synchronization trainingpattern.
 3. The method of claim 1, further comprising: performing saidenabling and disabling within a predetermined wakeup time.
 4. The methodof claim 1, wherein: the predetermined wakeup time is configurable.